local platform = require("utils.platform")

local M = {}

-- 获取平台信息
local os_info = platform()

-- 定义不同平台的图标集
-- 基于原始配置文件注释中的图标定义，使用正确的平台特定图标
-- 解决在 Windows 下 Nerd Font 图标 󰌪 和 󰌽 显示为苹果标志的问题
M.icons = {
  windows = {
    static_tab = utf8.char(0xe70f),  -- PowerShell 图标 (原配置注释中的 PS_ICON)
    active_tab = utf8.char(0xf83c),  -- WSL/Windows 图标 (原配置注释中的 WSL_ICON)  
    terminal = utf8.char(0xe70f),    -- PowerShell 图标
    folder = utf8.char(0xf07c),      -- Windows 文件夹图标
    admin = utf8.char(0xf49c)        -- 管理员图标 (原配置注释中的 ADMIN_ICON)
  },
  linux = {
    static_tab = "󰌪",      -- Linux: 使用原来的 Nerd Font 图标
    active_tab = "󰌽",      -- Linux: 使用原来的 Nerd Font 图标
    terminal = "",       -- Linux 终端图标
    folder = "",         -- Linux 文件夹图标
    admin = ""           -- Linux 管理员图标
  },
  mac = {
    static_tab = "󰌪",      -- macOS: 保持原来的 Nerd Font 图标
    active_tab = "󰌽",      -- macOS: 保持原来的 Nerd Font 图标
    terminal = "",       -- macOS 终端图标
    folder = "",         -- macOS 文件夹图标
    admin = ""           -- macOS 管理员图标
  }
}

-- 检测当前运行环境（基于进程名称和标题）
M.detect_runtime_environment = function(process_name, pane_title)
  -- 将进程名称转换为小写以便匹配
  local proc_lower = (process_name or ""):lower()
  local title_lower = (pane_title or ""):lower()
  
  -- SSH 连接检测
  if proc_lower:match("ssh") or title_lower:match("ssh") then
    -- 检测是否连接到不同类型的服务器
    if title_lower:match("ubuntu") or title_lower:match("debian") or 
       title_lower:match("centos") or title_lower:match("rhel") or
       title_lower:match("linux") or proc_lower:match("bash") then
      return "linux"
    elseif title_lower:match("darwin") or title_lower:match("macos") or 
           title_lower:match("osx") then
      return "mac"
    else
      -- 默认 SSH 连接假设为 Linux
      return "linux"
    end
  end
  
  -- WSL 检测
  if proc_lower:match("wsl") or title_lower:match("wsl") or
     proc_lower:match("bash") and title_lower:match("wsl") then
    return "linux"
  end
  
  -- PowerShell/CMD 检测（Windows 本地）
  if proc_lower:match("powershell") or proc_lower:match("cmd") or 
     proc_lower:match("pwsh") then
    return "windows"
  end
  
  -- 默认使用主机系统平台
  if os_info.is_win then
    return "windows"
  elseif os_info.is_linux then
    return "linux"
  elseif os_info.is_mac then
    return "mac"
  else
    return "generic"
  end
end

-- 获取基于宿主系统的图标（原来的函数）
M.get_host_platform_icons = function()
  if os_info.is_win then
    return M.icons.windows
  elseif os_info.is_linux then
    return M.icons.linux
  elseif os_info.is_mac then
    return M.icons.mac
  else
    -- 默认使用通用图标
    return {
      static_tab = "󰔶",
      active_tab = "󰔷",
      terminal = "",
      folder = "",
      admin = ""
    }
  end
end

-- 获取基于运行时环境的图标
M.get_runtime_icons = function(process_name, pane_title)
  local runtime_env = M.detect_runtime_environment(process_name, pane_title)
  
  if runtime_env == "windows" then
    return M.icons.windows
  elseif runtime_env == "linux" then
    return M.icons.linux
  elseif runtime_env == "mac" then
    return M.icons.mac
  else
    return M.get_host_platform_icons()
  end
end

-- 导出当前平台的图标（向后兼容）
M.current = M.get_host_platform_icons()

return M